home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / comm / bbs / logic100.lha / developer / examples / SpyNode.s < prev   
Encoding:
Text File  |  1995-03-01  |  2.6 KB  |  143 lines

  1. ****************************************************************************
  2. *                        SpyNode for Logicbbs                             *
  3.  *                       --------------------                            *
  4.   *                    Written by  Michael Pendec                       *
  5.    *                Copyright 1995 ParCon Software                     *
  6.     *******************************************************************
  7.  
  8. ;Source is originally written for AsmOne and will be compiled
  9. ; correctly with AsmOne. But other compilers may work just as well.
  10.  
  11.  
  12.         INCDIR    "source:includes/"
  13.         include    "lvo3.0/exec_lib.i"
  14.         include    "lvo3.0/dos_lib.i"
  15.         include    "lvo3.0/LBBS_Lvo_lib.i"
  16.  
  17. WriteTextScreen    MACRO
  18.         move.l    MyNodePtr(pc),d1
  19.         lea    \1(A4),a0
  20.         move.l    a0,d2
  21.         moveq    #0,d3
  22.         moveq    #0,d4
  23.         CALLLBB    SendTextConsole
  24.         tst.l    d0
  25.         bmi.w    FreeNode
  26.         ENDM
  27.  
  28. WriteTextA0    MACRO
  29.         move.l    MyNodePtr(pc),d1
  30.         move.l    a0,d2
  31.         moveq    #0,d3
  32.         moveq    #0,d4
  33.         CALLLBB    SendTextConsole
  34.         tst.l    d0
  35.         bmi.w    FreeNode
  36.         ENDM
  37.  
  38.         basereg    Mya4ptr,a4
  39.  
  40.         section    SpyNode,code
  41.  
  42. j        movem.l    d0-a6,-(A7)
  43.         lea    mya4ptr,a4
  44.         lea    bss1(a4),a2
  45.         lea    bss2(a4),a3
  46. .e        clr.w    (a2)+
  47.         cmp.l    a3,a2
  48.         bne.s    .e
  49.         move.l    a7,OldStack(a4)
  50.         pea    (a0)
  51.         lea    doslib(a4),a1
  52.         moveq    #0,d0
  53.         CALLEXEC    OpenLibrary
  54.         move.l    d0,_DosBase(a4)
  55.         lea    LibraryName(a4),a1
  56.         moveq    #0,d0
  57.         CALLEXEC    OpenLibrary
  58.         move.l    (a7)+,a0
  59.         tst.l    d0
  60.         beq.w    exitall
  61.         move.l    d0,_LbbsBase(A4)
  62.  
  63.         bsr.w    Get_Number
  64.         move.l    a0,TypeMe(a4)
  65.  
  66.         move.l    d7,d1
  67.         beq.w    NoNode
  68.         CALLLBB    SpyNode
  69.         tst.l    d0
  70.         bmi.w    Nonode
  71.         move.l    d0,MyNodePtr(A4)
  72.  
  73.         move.l    TypeMe(a4),a0
  74.         WriteTextA0
  75.  
  76.  
  77. FreeNode
  78. .e444        move.l    MyNodePtr(A4),d1
  79.         CALLLBB    FreeSpy
  80. NoNode        move.l    _LbbsBase(A4),a1
  81.         CALLEXEC    CloseLibrary
  82. exitall        move.l    OldStack(a4),a7
  83.         movem.l    (a7)+,d0-a6
  84.         rts
  85.  
  86. Get_Number        moveq    #0,d7
  87.         moveq    #0,d6
  88. .t2        moveq    #0,d0
  89.         move.b    (a0)+,d0
  90.         beq.s    .a
  91.         cmp.w    #$20,d0
  92.         beq.s    .t2
  93.         cmp.w    #9,d0
  94.         beq.s    .t2
  95.         cmp.w    #10,d0
  96.         beq.s    .r4
  97.         cmp.w    #'-',d0
  98.         bne.s    .r2a
  99.         moveq    #1,d6
  100. .r3        moveq    #0,d0
  101.         move.b    (a0)+,d0
  102. .r2a        cmp.w    #' ',d0
  103.         beq.s    .r5
  104.         cmp.w    #9,d0
  105.         beq.s    .l1
  106.         cmp.w    #';',d0
  107.         beq.s    .r5
  108.         cmp.w    #10,d0
  109.         beq.s    .r4
  110.         cmp.w    #'0',d0
  111.         blt.s    .r4
  112.         cmp.w    #'9',d0
  113.         bgt.s    .r4
  114. .r2        move.l    d0,-(A7)
  115.         moveq    #10,d1
  116.         move.l    d7,d0
  117.         mulu    d1,d0
  118.         move.l    d0,d7
  119.         move.l    (a7)+,d0
  120.         and.w    #$f,d0
  121.         add.l    d0,d7
  122.         bra.s    .r3
  123. .r4        tst.w    d6
  124.         beq.s    .l1
  125.         neg.l    d7
  126. .l1        moveq    #0,d0
  127.         rts
  128. .a        moveq    #1,d0
  129.         rts
  130. .r5        bra.s    .r4
  131.  
  132. Mya4ptr
  133. Doslib        dc.b    'dos.library',0
  134. LibraryName    dc.b    'lbbs.library',0
  135.         even
  136. bss1
  137. TypeMe            ds.l    1
  138. OldStack        ds.l    1
  139. MyNodePtr        ds.l    1
  140. _LbbsBase        ds.l    1
  141. _DosBase        ds.l    1
  142. bss2
  143.